const express = require('express')
const router = express.Router()
// 链接数据库
const conn = require('../util/sql')
// token验证
const jwt = require('jsonwebtoken')
// post键值对传递
router.use(express.urlencoded())
// 用户注册
router.post('/reguser', (req, res) => {
    // 1.获取参数
    console.log('接受的参数是', req.body);
    // 解构
    const {
        username,
        password
    } = req.body
    // 根据用户名做一次查询，如果找到了结果，说明名字被占用，如果查询为空，说明可以注册
    const sqlStrSelect = `select username from users where username="${username}"`
    conn.query(sqlStrSelect, (err, result) => {
        // 查询出错
        if (err) {
            console.log(err);
            res.json({
                status: 1,
                message: "注册失败"
            })
            return
        }
        console.log(result);
        // 说明名字被占用
        if (result.length > 0) {
            res.json({
                status: 1,
                message: "注册失败，用户名已被占用"
            })
            return
        }
        // 说明名字可以使用
        // 2.拼接SQL语句
        const sqlStr = `insert into users(username,password) values("${username}","${password}")`
        // 3.执行sql语句
        conn.query(sqlStr, (err, result) => {
            console.log(err);
            console.log(result);
            if (err) {
                res.json({
                    status: 1,
                    message: "注册失败"
                })
                return
            }
            res.json({
                status: 0,
                message: "注册成功"
            })
        })
    })

    // res.send('ok')
})
// 用户登录
router.post('/login', (req, res) => {
    // 1.获取参数
    console.log('登录接收的参数', req.body);
    // 2.解构
    const {
        username,
        password
    } = req.body
    // 2.2 拼接sql语句 根据用户名和密码去做查询，找到说明登陆成功，查不到，说明错误
    const sqlStr = `select * from users where username="${username}" and password="${password}"`
    // 3.执行sql语句
    conn.query(sqlStr, (err, result) => {
        // 4.根据不同结果返回响应
        if (err) {
            console.log(err);
            res.json({
                status: 1,
                message: "登录失败"
            })
            return
        }
        console.log(result);
        // 如果查询到了，说明登陆成功，要返回token
        if (result.length > 0) {
            const token = 'Bearer ' + jwt.sign({
                    name: username
                }, //token要保存的数据
                'bignews1', // 加密的钥匙
                {
                    expiresIn: 50 * 60 * 60
                } //过期时间
            )
            res.json({
                status: 0,
                message: "登录成功",
                token
            })
        } else {
            res.json({
                status: 1,
                message: "登录失败，用户名或密码不对"
            })
        }
    })
    // res.send('ok')
})

// 导出
module.exports = router